package com.xiuxia.bopicturebackend.service;

import com.xiuxia.bopicturebackend.model.dto.space.analyze.*;
import com.xiuxia.bopicturebackend.model.entity.Space;
import com.xiuxia.bopicturebackend.model.entity.User;
import com.xiuxia.bopicturebackend.model.vo.space.analyze.*;

import java.util.List;

/**
 * @ClassName SpaceAnalyzeService
 * @Author CHENBO
 * @Date 2025/7/16 9:29
 */
public interface SpaceAnalyzeService {
    /**
     * 获取空间使用分析数据
     *
     * @param spaceAnalyzeRequestDTO 使用分析请求
     * @param loginUser              登录用户
     * @return 空间使用分析结果
     */
    SpaceUsageAnalyzeResponseVO getSpaceUsageAnalyze(SpaceAnalyzeRequestDTO spaceAnalyzeRequestDTO, User loginUser);

    /**
     * 获取空间图片分类使用分析数据
     *
     * @param spaceCategoryAnalyzeRequestDTO 分类使用分析请求
     * @param loginUser                      登录用户
     * @return 分类使用分析结果
     */
    List<SpaceCategoryAnalyzeResponseVO> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequestDTO spaceCategoryAnalyzeRequestDTO, User loginUser);

    /**
     * 获取空间图片标签使用分析数据
     *
     * @param spaceTagAnalyzeRequestDTO 标签使用分析请求
     * @param loginUser                 登录用户
     * @return 标签使用分析结果
     */
    List<SpaceTagAnalyzeResponseVO> getSpaceTagAnalyze(SpaceTagAnalyzeRequestDTO spaceTagAnalyzeRequestDTO, User loginUser);

    /**
     * 获取空间图片大小使用分析数据
     *
     * @param spaceSizeAnalyzeRequestDTO 大小使用分析请求
     * @param loginUser                  登录用户
     * @return 大小使用分析结果
     */
    List<SpaceSizeAnalyzeResponseVO> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequestDTO spaceSizeAnalyzeRequestDTO, User loginUser);

    /**
     * 获取空间图片用户上传行为分析数据
     *
     * @param spaceUserAnalyzeRequestDTO 用户上传行为分析请求
     * @param loginUser                  登录用户
     * @return 用户上传行为分析结果
     */
    List<SpaceUserAnalyzeResponseVO> getSpaceUserAnalyze(SpaceUserAnalyzeRequestDTO spaceUserAnalyzeRequestDTO, User loginUser);

    /**
     * 获取空间图片排行数据
     *
     * @param spaceRankAnalyzeRequest 排行数据请求
     * @param loginUser               登录用户
     * @return 排行数据结果
     */
    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequestDTO spaceRankAnalyzeRequest, User loginUser);

}
